/**
 * 渲染进程 Aegis 工具
 * 通过 IPC 与主进程的 Aegis 实例通信
 */

// 通过 IPC 调用主进程的 Aegis 方法
async function callMainAegis(method: string, ...args: any[]): Promise<any> {
  try {
    if (window.electron?.ipcRenderer) {
      return await window.electron.ipcRenderer.invoke('aegis-call', { method, args });
    } else {
      console.warn('Electron IPC 不可用');
    }
  } catch (error) {
    console.error(`调用主进程 Aegis ${method} 失败:`, error);
  }
}

// 初始化函数（渲染进程中不需要实际初始化，主进程已处理）
export function initAegis(): void {
  console.log('渲染进程 Aegis 工具已准备就绪，将通过 IPC 与主进程通信');
}

// 上报自定义事件
export function reportEvent(eventName: string, extData?: Record<string, any>): void {
  callMainAegis('reportEvent', eventName, extData);
}

// 上报信息日志
export function info(message: string, data?: Record<string, any>): void {
  callMainAegis('info', message, data);
}

// 上报错误日志
export function error(message: string, errorData?: any): void {
  callMainAegis('error', message, errorData);
}

// 上报普通日志
export function report(message: string, data?: Record<string, any>): void {
  callMainAegis('report', message, data);
}

// 上报自定义测速
export function reportTime(name: string, duration: number): void {
  callMainAegis('reportTime', name, duration);
}

// 设置用户信息
export function setUser(uid: string): void {
  callMainAegis('setUser', uid);
}

// 设置配置（为了兼容性保留，但在 Electron SDK 中可能不需要）
export function setConfig(_config: any): void {
  console.warn('setConfig 在 Electron SDK 中可能不适用，请使用 setUser');
}

// 获取 Aegis 实例（渲染进程中返回 null，因为实例在主进程）
export function getAegisInstance(): null {
  console.warn('Aegis 实例在主进程中，渲染进程无法直接访问');
  return null;
}